Keen - jl

This code simulates the Keen model as specified in Grasselli and Costa Lima (2012)
Authors: B. Costa Lima and M. Grasselli

Grasselli, M. R., and B. Costa Lima. 2012. “An Analysis of the Keen Model for Credit Expansion, Asset Price Bubbles and Financial Fragility.” Mathematics and Financial Economics 6 (3): 191–210. https://doi.org/10.1007/s11579-012-0071-8.

https://ms.mcmaster.ca/~grasselli/GrasselliCostaLima_MAFE_online.pdf
https://www.oecd.org/naec/projects/naecinnovationlabevents/matheus_grasselli_OECD_masterclass_2020.pdf
https://ms.mcmaster.ca/~grasselli/keen.html

https://diffeq.sciml.ai/stable/tutorials/ode_example/

Preamble

"C:\Users\ibuckley\OneDrive - CSTO\Code\Grasselli\2012 Keen\"

Keen model

Notation

Capital stock

$$ \dot{K}=\kappa(1-\omega-r d) Y-\delta K $$

where the rate of new investment is a nonlinear increasing function $\kappa$ of the net profit share $π = (1 − ω − rd)$ and $δ$ is a constant depreciation rate as before.

Total output

$$ \frac{\dot{Y}}{Y}=\frac{\kappa(1-\omega-r d)}{v}-\delta:=g(\omega, d) $$

Employment rate

$$ \frac{\dot{\lambda}}{\lambda}=\frac{\kappa(1-\omega-r d)}{v}-\alpha-\beta-\delta $$

Debt

The new dynamic variable in this model is the amount of debt, which changes based on the difference between new investment and net profits.

$$ \dot{D}=\kappa(1-\omega-r d) Y-(1-\omega-r d) Y $$
$$ \frac{\dot{d}}{d}=\frac{\dot{D}}{D}-\frac{\dot{Y}}{Y}=\frac{\kappa(1-\omega-r d)-(1-\omega-r d)}{d}-\frac{\kappa(1-\omega-r d)}{v}+\delta . $$

Parameters

State variables

Fundamental economic constants Equation (24)

Phillips curve - Equation (25)

$$\Phi(\lambda)=\frac{\phi_{1}}{(1-\lambda)^{2}}-\phi_{0}$$

Net profit share $\pi$

$$\pi = (1-\omega - r d)$$

Investment function - Equation (64)

$$\kappa(x)=\kappa_{0}+\kappa_{1} e^{\kappa_{2} x} $$
$$\kappa_{0}=-0.0065, \quad \kappa_{1}=e^{-5}, \quad \kappa_{2}=20$$

Define Phillips curve $\Phi$, & investment function $\kappa$

Phillips curve - Equation (25)

Investment function - Equation (64)

Numerical Values of Interest

https://www.mathworks.com/help/symbolic/vpasolve.html
Symbolic Math Toolbox

Equation (35)

$$\begin{array}{l} \dot{\omega}=\omega[\Phi(\lambda)-\alpha] \\ \dot{\lambda}=\lambda\left[\frac{\kappa(1-\omega-r d)}{v}-\alpha-\beta-\delta\right] \\ \dot{d}=d\left[r-\frac{\kappa(1-\omega-r d)}{v}+\delta\right]+\kappa(1-\omega-r d)-(1-\omega) \end{array}$$

Equation 40

$$d\left[r-\frac{\kappa(1-r d)}{v}+\delta\right]+\kappa(1-r d)-1=0$$

Equation (42) - equilibrium point

$$ \bar{\pi}_{1}=\kappa^{-1}(\nu(\alpha+\beta+\delta)) $$
$$ \begin{array}{l} \bar{\omega}_{1}=1-\bar{\pi}_{1}-r \frac{v(\alpha+\beta+\delta)-\bar{\pi}_{1}}{\alpha+\beta} \\ \bar{\lambda}_{1}=\Phi^{-1}(\alpha) \\ \bar{d}_{1}=\frac{v(\alpha+\beta+\delta)-\bar{\pi}_{1}}{\alpha+\beta} \end{array} $$

Equation (47)

$$\begin{array}{l} \dot{\omega}=\omega[\Phi(\lambda)-\alpha] \\ \dot{\lambda}=\lambda\left[\frac{\kappa(1-\omega-r/u)}{v}-\alpha-\beta-\delta\right] \\ \dot{d}=d\left[r-\frac{\kappa(1-\omega-r/u)}{v}+\delta\right]+\kappa(1-\omega-r/u)-(1-\omega) \end{array}$$

Interior equilibrium point expressions

See Equation (42)

Equation (59)

$r\left[\frac{\kappa^{\prime}\left(\bar{\pi}_{1}\right)}{v}\left(\bar{\pi}_{1}-\kappa\left(\bar{\pi}_{1}\right)+v(\alpha+\beta)\right)-(\alpha+\beta)\right]>0$

Jacobian ~ equation (59)

$$ J(\omega, \lambda, u)=\left[\begin{array}{ccc} \Phi(\lambda)-\alpha & \omega \Phi^{\prime}(\lambda) & 0 \\ -\frac{\lambda \kappa^{\prime}(\pi)}{\nu} & \frac{\kappa(\pi)-v(\alpha+\beta+\delta)}{v} & -\frac{r \lambda \kappa^{\prime}(\pi)}{u^{2} v} \\ \frac{\left(v u^{2}-u\right) \kappa^{\prime}(\pi)-v u^{2}}{v} & 0 & \frac{\kappa(\pi)(1-2 u)+r \kappa^{\prime}(\pi)(1 / u-1)+2 u v(1-\omega)-v(r+\delta)}{v} \end{array}\right] $$

Sample paths of the Keen model using DifferentialEquations

https://diffeq.sciml.ai/stable/tutorials/ode_example/

convert

https://ms.mcmaster.ca/~grasselli/keen.html

restore

Define ODEProblem and solve

Initial values

ODEProblem

solve

Convert to DataFrame

https://diffeq.sciml.ai/stable/features/io/#io

State variables

Experiments munging the result

Calculate $Y$

Figure 3

Figure 4

Figure 5

Auxiliary functions

Do not run these in the notebook. MATLAB does not support functions outside of files of the same name.

Test plotting

https://github.com/imatlab/imatlab
https://github.com/plotly/plotly-graphing-library-for-matlab